// 定义包路径，用于组织Java类的命名空间
package com.itheima.demo;

// 定义一个名为Test4的公开类，用于实现素数查找功能
public class Test4 {
    // 定义主方法，Java程序的入口点
    public static void main(String[] args) {
        // 目标：找出101-200之间的全部素数（素数是只能被1和自身整除的大于1的整数）
        // 定义计数器变量count，用于记录找到的素数个数，初始值为0
        int count = 0;
        // 1、使用for循环遍历101到200之间的每一个整数
        // i是循环变量，初始值为101，每次循环后i增加1，直到i大于200时结束循环
        for (int i = 101; i <= 200; i++) {
            // i的值依次为：101, 102, 103, ..., 200，逐个检查每个数字
            // 2、每遍历到一个数字，调用isPrime方法判断这个数字是否是素数
            // 如果isPrime方法返回true，说明i是素数
            if (isPrime(i)) {
                // 输出这个素数
                System.out.println(i);
                // 素数个数加1
                count++;
            }
        }
        // 循环结束后，输出找到的素数总个数
        System.out.println("素数的个数为：" + count);
    }

    // 定义isPrime方法，用于判断一个整数是否为素数
    // 参数num：要判断的整数
    // 返回值：如果num是素数返回true，否则返回false
    public static boolean isPrime(int num) {
        // num是传入的要判断的数字，例如101
        // 定义一个循环从2开始，到num的一半结束，判断num是否能被这些数整除
        // 如果都不能被整除，那么num就是素数
        // i从2开始，每次循环后i增加1，直到i大于num/2时结束循环
        // 只需要检查到num的一半就足够了，因为一个数不可能被大于它一半的数整除（除了它本身）
        for (int i = 2; i <= num / 2; i++) {
            // i的值依次为：2, 3, 4, 5, ..., num/2
            // 判断num是否能被i整除，使用取模运算符%计算余数
            // 如果num除以i的余数为0，说明num能被i整除
                // 能被整除，说明num不是素数，返回false
            if (num % i == 0) {
                return false;
            }
        }
        // 如果循环结束都没有返回false，说明num不能被2到num/2之间的任何数整除，因此num是素数，返回true
        return true; // 是素数
    }
}
